home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / ARMLINUX / MAIL / 9804 / 000140_owner-linux-arm…r.rutgers.edu _Thu Apr 30 00:50:09 1998.msg < prev    next >
Internet Message Format  |  1998-05-13  |  5KB

  1. Return-Path: <owner-linux-arm-outgoing@vger.rutgers.edu>
  2. Received: from orava.funet.fi (orava.funet.fi [128.214.248.46])
  3.     by odie.barnet.ac.uk (8.8.6/8.8.6) with ESMTP id AAA08449
  4.     for <willy@odie.fluff.org>; Thu, 30 Apr 1998 00:50:08 +0100
  5. Received: from vger.rutgers.edu ([128.6.190.2]:31446 "EHLO vger.rutgers.edu" ident: "root") by orava.funet.fi with ESMTP id <390594-18338>; Thu, 30 Apr 1998 02:47:39 +0300
  6. Received: by vger.rutgers.edu id <971539-8838>; Wed, 29 Apr 1998 19:09:48 -0400
  7. Received: from snowcrash.cymru.net ([163.164.160.3]:1339 "EHLO snowcrash.cymru.net" ident: "NO-IDENT-SERVICE") by vger.rutgers.edu with ESMTP id <971596-8838>; Wed, 29 Apr 1998 18:40:42 -0400
  8. Received: from caramon.armlinux.org (dialup2.cymru.net [163.164.160.66]) by snowcrash.cymru.net (8.8.7/8.7.1) with ESMTP id AAA29881; Thu, 30 Apr 1998 00:01:46 +0100
  9. Received: from raistlin.armlinux.org (raistlin [192.168.0.3]) by caramon.armlinux.org (8.7.4/8.7.3) with ESMTP id XAA03282; Wed, 29 Apr 1998 23:56:58 +0100
  10. From: Russell King - ARM Linux Admin <linux@arm.uk.linux.org>
  11. Received: (from linux@localhost) by raistlin.armlinux.org (8.7.4/8.7.3) id XAA00790; Wed, 29 Apr 1998 23:52:14 +0100
  12. Message-Id: <199804292252.XAA00790@raistlin.armlinux.org>
  13. Subject: Re: uaccess ramblings
  14. To: pb@nexus.co.uk (Philip Blundell)
  15. Date:     Wed, 29 Apr 1998 23:52:14 +0100 (BST)
  16. Cc: linux-arm@vger.rutgers.edu
  17. In-Reply-To: <E0yUTwm-0001Q6-00@spring.nexus.co.uk> from "Philip Blundell" at Apr 29, 98 11:18:39 am
  18. X-Mailer: ELM [version 2.4 PL24]
  19. MIME-Version: 1.0
  20. Content-Type: text/plain; charset=US-ASCII
  21. Content-Transfer-Encoding: 7bit
  22. X-Orcpt: rfc822;linux-arm@vger.rutgers.edu
  23. Sender: owner-linux-arm@vger.rutgers.edu
  24. Precedence: bulk
  25. X-Loop: majordomo@vger.rutgers.edu
  26. Status: RO
  27.  
  28. Philip Blundell writes:
  29. > I was thinking about the code we use for user accesses on ARM2/3 machines just 
  30. > now (can you tell I'm not having a particularly busy day?)
  31.  
  32. Hmm, how did I tell?
  33.  
  34. > At the moment all the get_user calls translate into a function call to one of 
  35. > two addresses depending on whether we are in `kernel' or `user' mode 
  36. > (indirected through current->tss).  I was wondering whether we could actually 
  37. > press the MEMC hardware into service to avoid the need for this.
  38.  
  39. Unfortunately, the MEMC hardware is very restrictive in this respect.
  40.  
  41. > If we always use LDRT/STRT instructions for get_user() and put_user() then the 
  42. > ARM will ask for translation every time.  If I remember right, though I don't 
  43. > have a MEMC datasheet here to check, you can set the privilege level that will 
  44. > be used for translated accesses by writing to a MEMC register.
  45.  
  46. This will not work.  LDRT does not enable logical translation - it just turns
  47. on the user protection (by asserting the TRAN output).  The control register
  48. does not allow the checks to be turned off.  I quote:
  49.  
  50.   Supervisor Mode - ... is selected while the SPMD input is held high.
  51.  
  52. (and SPMD is generally connected to -TRAN).
  53.  
  54.   Operating System Mode (OS) - OS mode is selected by setting a control bit
  55.   in the MEMC Control Register (which may only be done from SVC mode).  OS
  56.   mode is more privileged than User mode <<<when accessing logically mapped
  57.   RAM, but acts as User mode in all other cases.>>>
  58.  
  59. Since the kernel accesses physical RAM from time to time using the get_user and
  60. put_user macros, replacing them with a LDRT/STRT instruction will cause a fault.
  61.  
  62. However, one way to improve things would be for the compiler to allow you to
  63. control what registers were used to pass data into the inline assembly fragment.
  64. Without this, it produces around 3 redundant mov instructions per get_user/put_user
  65. macro.
  66.  
  67. > Incidentally, I think the `wp_works_ok' macros in processor.h are probably 
  68. > completely redundant and can be removed -- the armv one is also set to the 
  69. > wrong value. :-)
  70.  
  71. They are redundant and have now been removed.
  72.    _____
  73.   |_____| ------------------------------------------------- ---+---+-
  74.   |   |        Russell King       linux@arm.uk.linux.org      --- ---
  75.   | | | |  http://www.arm.uk.linux.org/~rmk/armlinux.html    /  /  |
  76.   | +-+-+                                                     --- -+-
  77.   /   |               THE developer of ARM Linux              |+| /|\
  78.  /  | | |                                                     ---  |
  79.     +-+-+ -------------------------------------------------  /\\\  |
  80.  
  81. unsubscribe: body of `unsubscribe linux-arm' to majordomo@vger.rutgers.edu